﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Transactions;
using negocios;
using objetos;
using publico;

namespace softsales.pagina.empresa
{
    public partial class empresa_formulario : System.Web.UI.Page
    {

        // empresa
        BLL_TB_EMPRESA b_tb_empresa = new BLL_TB_EMPRESA();
        OBJ_TB_EMPRESA o_tb_empresa = new OBJ_TB_EMPRESA();

        // endereco empresa
        BLL_TB_ENDERECO_EMPRESA b_tb_endereco_empresa = new BLL_TB_ENDERECO_EMPRESA();
        OBJ_TB_ENDERECO_EMPRESA o_tb_endereco_empresa = new OBJ_TB_ENDERECO_EMPRESA();

 
        BLL_TB_IMPOSTO_CRT b_tb_imposto_crt = new BLL_TB_IMPOSTO_CRT();        
        BLL_TB_TIPO_LOGRADOURO b_tb_tipo_logradouro = new BLL_TB_TIPO_LOGRADOURO();
        BLL_TB_PAISES b_tb_paises = new BLL_TB_PAISES();
        BLL_TB_CIDADE b_tb_cidade = new BLL_TB_CIDADE();
        BLL_TB_UF b_tb_uf = new BLL_TB_UF();
        BLL_TB_TIPO_EMPRESA b_tb_tipo_empresa = new BLL_TB_TIPO_EMPRESA();
        BLL_TB_TIPO_ENDERECO b_tb_tipo_endereco = new BLL_TB_TIPO_ENDERECO();

        BLL_TB_IMPOSTO_CSOSN b_tb_imposto_csosn = new BLL_TB_IMPOSTO_CSOSN();
        OBJ_TB_IMPOSTO_CSOSN o_tb_imposto_csosn = new OBJ_TB_IMPOSTO_CSOSN();

        BLL_TB_IMPOSTO_CST_COFINS b_tb_imposto_cst_cofins = new BLL_TB_IMPOSTO_CST_COFINS();
        OBJ_TB_IMPOSTO_CST_COFINS o_tb_imposto_cst_cofins = new OBJ_TB_IMPOSTO_CST_COFINS();

        BLL_TB_IMPOSTO_CST_ICMS b_tb_imposto_cst_icms = new BLL_TB_IMPOSTO_CST_ICMS();
        OBJ_TB_IMPOSTO_CST_ICMS o_tb_imposto_cst_icms = new OBJ_TB_IMPOSTO_CST_ICMS();

        BLL_TB_IMPOSTO_CST_IPI b_tb_imposto_cst_ipi = new BLL_TB_IMPOSTO_CST_IPI();
        OBJ_TB_IMPOSTO_CST_IPI o_tb_imposto_cst_ipi = new OBJ_TB_IMPOSTO_CST_IPI();

        BLL_TB_IMPOSTO_CST_PIS b_tb_imposto_cst_pis = new BLL_TB_IMPOSTO_CST_PIS();
        OBJ_TB_IMPOSTO_CST_PIS o_tb_imposto_cst_pis = new OBJ_TB_IMPOSTO_CST_PIS();

        BLL_TB_CNAE b_tb_cnae = new BLL_TB_CNAE();
        OBJ_TB_CNAE o_tb_cnae = new OBJ_TB_CNAE();

        BLL_TB_LOG_ERRO b_tb_log_erro = new BLL_TB_LOG_ERRO();  

        protected void Page_Load(object sender, EventArgs e)
        {
            if (PUB_SESSAO.Logado())
            {

                if (!IsPostBack)
                {
           

                    b_tb_tipo_empresa.PreencheControle(DDL_ID_TIPO_EMPRESA, true);
                    b_tb_imposto_crt.PreencheControle(DDL_ID_CRT, false);

       

                    // endereco
                    b_tb_paises.PreencheControle(DDL_ID_PAIS, false);
                    b_tb_tipo_endereco.PreencheControle(DDL_ID_ENDERECO_TIPO, true);
                    b_tb_tipo_logradouro.PreencheControle(DDL_ID_LOGRADOURO, true);
                    b_tb_uf.PreencheControle(DDL_ID_UF, true);
     
                    TAB_CONTAINER.ActiveTab = TAB_EMPRESA;


                    if (Request["id"] != null)
                    {

                        TXT_DT_CADASTRO.ReadOnly = true;
                        TXT_DT_ATUALIZACAO.ReadOnly = true;

                        LBL_TITULO_PAGINA.Text = "Editar Empresa";
                        if (PUB_FUNCOES.ApenasNumero(Request["id"].ToString()))
                        {
                            Editar(Request["id"].ToString());

                        }
                    }
                    else
                    {
                        TXT_DT_CADASTRO.Text = DateTime.Now.ToShortDateString();
                        TXT_DT_ATUALIZACAO.Text = DateTime.Now.ToShortDateString();

                        TXT_DT_CADASTRO.ReadOnly = true;
                        TXT_DT_ATUALIZACAO.ReadOnly = true;

                        LBL_TITULO_PAGINA.Text = "Incluir Empresa";
                    }
                }
                else
                {
                    // CNAE PRIMARIO
                    if (Session["id_cnae"] != null)
                    {
                        TXT_ID_CNAE_PRIMARIO.Text = (String)Session["id_cnae"];
                        o_tb_cnae = b_tb_cnae.SelecionarObjetoPorId(Convert.ToInt32(TXT_ID_CNAE_PRIMARIO.Text));
                        TXT_DESC_CNAE_PRIMARIO.Text = o_tb_cnae.descricao.ToString();
                        Session.Remove("id_cnae");
                    }                    
 

                }


            }


        }
        public void Editar(String id)
        {
            try
            {
                

                // busca os dados da empresa
                o_tb_empresa = b_tb_empresa.SelecionarObjetoPorId(Convert.ToInt32(id));
            
                HF_ID.Value = o_tb_empresa.id.ToString();
 
                b_tb_uf.PreencheControle(DDL_ID_UF, false);

                foreach (OBJ_TB_ENDERECO_EMPRESA o_tb_endereco_empresa in b_tb_endereco_empresa.SelecionarLista(string.Format("tb_endereco_empresa.id_empresa={0}", id), ""))
                {

                    

                    DDL_ID_LOGRADOURO.SelectedValue = o_tb_endereco_empresa.id_logradouro.ToString();
                    TXT_ENDERECO.Text = o_tb_endereco_empresa.endereco.ToString();
                    TXT_NUMERO.Text = o_tb_endereco_empresa.numero.ToString();
                    TXT_BAIRRO.Text = o_tb_endereco_empresa.bairro.ToString();
                    TXT_CEP.Text = o_tb_endereco_empresa.cep.ToString();
                    TXT_COMPLEMENTO.Text = o_tb_endereco_empresa.complemento.ToString();
                    DDL_ID_PAIS.SelectedValue = o_tb_endereco_empresa.id_pais.ToString();
                    DDL_ID_UF.SelectedValue = o_tb_endereco_empresa.id_uf.ToString();
                    

                    b_tb_cidade.PreencheControle(DDL_ID_CIDADE, string.Format("id_uf = {0}", DDL_ID_UF.SelectedValue), true);


                    DDL_ID_CIDADE.SelectedValue = o_tb_endereco_empresa.id_cidade.ToString();
                    TXT_TELEFONE.Text = o_tb_endereco_empresa.telefone.ToString();
                    TXT_CELULAR.Text = o_tb_endereco_empresa.celular.ToString();
                    TXT_FAX.Text = o_tb_endereco_empresa.fax.ToString();
                    DDL_ID_ENDERECO_TIPO.SelectedValue = o_tb_endereco_empresa.id_endereco_tipo.ToString();
                    CHK_SIT_PRINCIPAL.Checked = o_tb_endereco_empresa.sit_principal;

                    
                    
                }

 
                CHK_SIT_ATIVO.Checked = Convert.ToBoolean(o_tb_empresa.sit_ativo.ToString());
                TXT_EMAIL.Text = o_tb_empresa.email.ToString();
                TXT_FANTASIA.Text = o_tb_empresa.fantasia.ToString();
                TXT_INSC_EST.Text = o_tb_empresa.insc_est.ToString();
                TXT_INSC_EST_ST.Text = o_tb_empresa.insc_est_st.ToString();
                TXT_INSC_MUN.Text = o_tb_empresa.insc_mun.ToString();            
                TXT_NOME.Text = o_tb_empresa.nome.ToString();
                TXT_OBSERVACAO.Text = o_tb_empresa.observacao.ToString();
                CHK_SIT_ATIVO.Checked = o_tb_empresa.sit_ativo;
                TXT_CNPJ.Text = o_tb_empresa.cnpj.ToString();
                TXT_DT_CADASTRO.Text = PUB_FUNCOES.FormataDataBR(o_tb_empresa.dt_cadastro.ToString());
                TXT_DT_ATUALIZACAO.Text = PUB_FUNCOES.FormataDataBR(o_tb_empresa.dt_atualizacao.ToString());
                TXT_ID_CNAE_PRIMARIO.Text = o_tb_empresa.id_cnae_primario.ToString();
                TXT_DESC_CNAE_PRIMARIO.Text = b_tb_cnae.SelecionarObjetoPorId(o_tb_empresa.id_cnae_primario).descricao.ToString();

                DDL_ID_TIPO_EMPRESA.SelectedValue = o_tb_empresa.id_tipo_empresa.ToString();

                DDL_ID_CRT.SelectedValue = o_tb_empresa.id_crt.ToString();

         
            }
            catch (Exception ex)
            {
                b_tb_log_erro.IncluirLogErro(ex);
                Master.MSG_ALERTA("Erro ao tentar preencher o formulario");
            }
          

        }


        protected void BTN_SALVAR_Click(object sender, EventArgs e)
        {
            try
            {
                string msg = string.Empty;
                int id_empresa ;
                if (DDL_ID_TIPO_EMPRESA.SelectedValue != "" && TXT_NOME.Text != "" && TXT_CNPJ.Text != "")
                {

                    // empresa 

                    using (TransactionScope scope = new TransactionScope())
                    {
                        o_tb_empresa.email = TXT_EMAIL.Text;
                        o_tb_empresa.fantasia = TXT_FANTASIA.Text;
                        o_tb_empresa.insc_est = TXT_INSC_EST.Text;
                        o_tb_empresa.insc_est_st = TXT_INSC_EST_ST.Text;
                        o_tb_empresa.insc_mun = TXT_INSC_MUN.Text;

                        o_tb_empresa.nome = TXT_NOME.Text;
                        o_tb_empresa.observacao = TXT_OBSERVACAO.Text;
                        o_tb_empresa.sit_ativo = Convert.ToBoolean(CHK_SIT_ATIVO.Checked);
                        o_tb_empresa.cnpj = PUB_FUNCOES.DesformataCNPJ(TXT_CNPJ.Text);
                        o_tb_empresa.id_cnae_primario = Convert.ToInt32(PUB_FUNCOES.TrataInteiro(TXT_ID_CNAE_PRIMARIO.Text));
                        o_tb_empresa.id_tipo_empresa = Convert.ToInt32(DDL_ID_TIPO_EMPRESA.SelectedValue);


                        // Endereço
                        o_tb_endereco_empresa.id_logradouro = Convert.ToInt32(DDL_ID_LOGRADOURO.SelectedValue);
                        o_tb_endereco_empresa.endereco = TXT_ENDERECO.Text.Trim();
                        o_tb_endereco_empresa.numero = TXT_NUMERO.Text.Trim();
                        o_tb_endereco_empresa.complemento = TXT_COMPLEMENTO.Text.Trim();
                        o_tb_endereco_empresa.bairro = TXT_BAIRRO.Text.Trim();
                        o_tb_endereco_empresa.cep = TXT_CEP.Text.Trim();
                        o_tb_endereco_empresa.telefone = TXT_TELEFONE.Text.Trim();
                        o_tb_endereco_empresa.celular = TXT_CELULAR.Text.Trim();
                        o_tb_endereco_empresa.fax = TXT_FAX.Text.Trim();
                        o_tb_endereco_empresa.id_pais = Convert.ToInt32(DDL_ID_PAIS.SelectedValue);
                        o_tb_endereco_empresa.id_cidade = Convert.ToInt32(DDL_ID_CIDADE.SelectedValue);                        
                        o_tb_endereco_empresa.id_endereco_tipo = Convert.ToInt32(DDL_ID_ENDERECO_TIPO.SelectedValue);                        
                        o_tb_endereco_empresa.id_uf = Convert.ToInt32(DDL_ID_UF.SelectedValue);                        
                        o_tb_endereco_empresa.sit_principal = Convert.ToBoolean(CHK_SIT_PRINCIPAL.Checked);
     

                        if (HF_ID.Value != string.Empty)
                        {
                            id_empresa = Convert.ToInt32(HF_ID.Value);

                            // EMPRESA ID
                            o_tb_empresa.id = id_empresa;
                            o_tb_empresa.dt_atualizacao = DateTime.Now;
                            b_tb_empresa.Alterar(o_tb_empresa);

                            // ENDERECO EMPRESA                            
                            o_tb_endereco_empresa.id_empresa = id_empresa;
                            b_tb_endereco_empresa.Alterar(o_tb_endereco_empresa);

                   
                            msg = PUB_MENSAGEM.MSG_ALTERACAO;
                        }
                        else
                        {
                            o_tb_empresa.dt_cadastro = DateTime.Now;
                            o_tb_empresa.dt_atualizacao = DateTime.Now;
                           
                            
                            // INCLUI OS DADOS EMPRESA 
                            id_empresa = b_tb_empresa.Incluir(o_tb_empresa);

                            // INCLUIR DADOS ENDEREÇO
                            o_tb_endereco_empresa.id_empresa = id_empresa;
                            b_tb_endereco_empresa.Incluir(o_tb_endereco_empresa);

              
                             msg = PUB_MENSAGEM.MSG_INCLUSAO;

                        }
                        
                        Master.MSG_ALERTA(msg, "default.aspx", false);

                        scope.Complete();

                        scope.Dispose();

                        
                      
                    }
                   
                }
            }
            catch (Exception ex)
            {
                Master.MSG_ALERTA("Erro ao tentar salvar o formulário");
                b_tb_log_erro.IncluirLogErro(ex);
                
            }
           
        }

        protected void BTN_CANCELAR_Click(object sender, EventArgs e)
        {
            Response.Redirect("default.aspx", false);
        }

        protected void DDL_ID_UF_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDL_ID_UF.SelectedValue != string.Empty)
            {
                b_tb_cidade.PreencheControle(DDL_ID_CIDADE, string.Format("id_uf = {0}", DDL_ID_UF.SelectedValue), true);
            }
            
        }

      
    }
}